import mysql.connector
from config import Config
import hashlib


def init_database():
    # 连接MySQL服务器（不指定数据库）
    conn = mysql.connector.connect(
        host=Config.MYSQL_HOST,
        user=Config.MYSQL_USER,
        password=Config.MYSQL_PASSWORD
    )
    cursor = conn.cursor()

    # 创建数据库
    cursor.execute(f"CREATE DATABASE IF NOT EXISTS {Config.MYSQL_DB}")
    cursor.execute(f"USE {Config.MYSQL_DB}")

    # 创建表
    tables = [
        """
        CREATE TABLE IF NOT EXISTS users (
            id INT AUTO_INCREMENT PRIMARY KEY,
            username VARCHAR(50) UNIQUE NOT NULL,
            password VARCHAR(255) NOT NULL,
            email VARCHAR(100) UNIQUE NOT NULL,
            phone VARCHAR(20),
            role ENUM('user', 'admin') DEFAULT 'user',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
        """,
        """
        CREATE TABLE IF NOT EXISTS rooms (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(100) NOT NULL,
            description TEXT,
            price DECIMAL(10, 2) NOT NULL,
            capacity INT NOT NULL,
            amenities TEXT,
            status ENUM('available', 'occupied', 'maintenance') DEFAULT 'available',
            image_url VARCHAR(255),
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
        """,
        """
        CREATE TABLE IF NOT EXISTS bookings (
            id INT AUTO_INCREMENT PRIMARY KEY,
            user_id INT NOT NULL,
            room_id INT NOT NULL,
            check_in DATE NOT NULL,
            check_out DATE NOT NULL,
            guests INT NOT NULL,
            total_price DECIMAL(10, 2) NOT NULL,
            status ENUM('pending', 'confirmed', 'checked_in', 'checked_out', 'cancelled') DEFAULT 'pending',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            FOREIGN KEY (user_id) REFERENCES users(id),
            FOREIGN KEY (room_id) REFERENCES rooms(id)
        )
        """,
        """
        CREATE TABLE IF NOT EXISTS bills (
            id INT AUTO_INCREMENT PRIMARY KEY,
            booking_id INT NOT NULL,
            amount DECIMAL(10, 2) NOT NULL,
            status ENUM('pending', 'paid') DEFAULT 'pending',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            paid_at TIMESTAMP NULL,
            FOREIGN KEY (booking_id) REFERENCES bookings(id)
        )
        """,
        """
        CREATE TABLE IF NOT EXISTS feedbacks (
            id INT AUTO_INCREMENT PRIMARY KEY,
            user_id INT NOT NULL,
            title VARCHAR(255) NOT NULL,
            description TEXT NOT NULL,
            status ENUM('pending', 'processing', 'resolved') DEFAULT 'pending',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            resolved_at TIMESTAMP NULL,
            FOREIGN KEY (user_id) REFERENCES users(id)
        )
        """,
        """
        CREATE TABLE IF NOT EXISTS page_contents (
            id INT AUTO_INCREMENT PRIMARY KEY,
            page_name VARCHAR(100) NOT NULL,
            section_name VARCHAR(100) NOT NULL,
            content TEXT,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        )
        """
    ]

    for table in tables:
        cursor.execute(table)

    # 插入初始数据
    # 管理员用户
    cursor.execute("""
        INSERT IGNORE INTO users (username, password, email, role) 
        VALUES (%s, %s, %s, %s)
    """, ('admin', 'admin123', 'admin@fengzhisu.com', 'admin'))

    # 示例房间
    rooms_data = [
        ('和风雅致套房', '传统日式风格套房，配备榻榻米和私人温泉，让您体验纯正的日式住宿文化。', 888.00, 2, '私人温泉,榻榻米,空调,免费WiFi', 'available'),
        ('竹林景观房', '窗外即是精心打理的日式庭院，竹林环绕，环境幽静，适合寻求宁静的旅客。', 688.00, 2, '庭院景观,茶具,空调,免费WiFi', 'available'),
        ('家庭和室', '宽敞的和式房间，适合家庭入住，配备舒适的寝具和传统日式装饰。', 988.00, 4, '家庭房,榻榻米,空调,免费WiFi', 'available'),
        ('山景豪华房', '坐拥山景的豪华客房，现代与传统的完美结合，提供极致的舒适体验。', 1288.00, 2, '山景,豪华寝具,迷你吧,空调', 'available')
    ]

    cursor.executemany("""
        INSERT IGNORE INTO rooms (name, description, price, capacity, amenities, status) 
        VALUES (%s, %s, %s, %s, %s, %s)
    """, rooms_data)

    # 页面内容
    page_contents_data = [
        ('index', 'welcome_text',
         '风之宿是一家位于山间的传统日式旅馆，我们致力于为客人提供宁静舒适的住宿体验。在这里，您可以远离城市的喧嚣，感受大自然的怀抱，体验地道的日式 hospitality。我们的理念是让每一位客人都能感受到家的温暖，同时体验日本传统文化的魅力。'),
        ('index', 'cuisine_text',
         '我们的料理以当地时令食材为中心，由经验丰富的厨师精心烹制。每一道菜品都注重原汁原味，展现食材的天然美味。无论是怀石料理还是家常菜，都能让您品尝到地道的日式风味，体验舌尖上的日本。'),
        ('index', 'facility_text', '我们提供完善的设施服务，包括天然温泉、传统茶室、休闲庭院等。每一处设施都经过精心设计，旨在为您提供最舒适的住宿体验，让您在旅途中找到家的感觉。'),
        ('about', 'main_content', '风之宿创立于1998年，位于风景秀丽的山区，是一家秉承传统日式待客之道的精品旅馆。我们坚持使用当地食材，保留传统工艺，为每一位客人提供独一无二的住宿体验。'),
        ('rooms', 'description', '我们的客房融合了传统日式美学与现代舒适需求，每一间客房都经过精心设计，确保您在享受传统文化的同时，也能体验到现代化的便利设施。'),
        ('cuisine', 'description', '我们的厨师团队精选当地最新鲜的时令食材，结合传统烹饪技艺，为您呈现地道的日式料理。从早餐到晚餐，每一餐都是一次味蕾的盛宴。'),
        ('facility', 'description', '风之宿提供完善的设施，包括天然温泉、茶室、图书馆、健身区等，满足您在旅居期间的各种需求，让您的住宿体验更加丰富多彩。'),
        ('access', 'description', '风之宿交通便利，从主要交通枢纽均可轻松到达。我们提供详细的交通指南和地图，帮助您顺利找到我们的位置。')
    ]

    cursor.executemany("""
        INSERT IGNORE INTO page_contents (page_name, section_name, content) 
        VALUES (%s, %s, %s)
    """, page_contents_data)

    conn.commit()
    cursor.close()
    conn.close()

    print("数据库初始化完成！")


if __name__ == '__main__':
    init_database()